home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Emulatoren / warpsnes / README.TXT < prev    next >
Text File  |  1998-11-08  |  35KB  |  742 lines

  1. Snes9x v1.10 29-SEP-1998
  2. ========================
  3.  
  4. Contents
  5. ========
  6. Changes Since Last Release
  7. Introduction
  8. What's Emulated
  9. What's Not
  10. What You Will Need
  11. Getting Started/Command Line Options
  12. Keyboard Controls
  13. Joystick Support
  14. Netplay Support
  15. Super FX
  16. Problems With ROMs
  17. Sound Problems
  18. Converting ROM Images
  19. Speeding up the Emulation
  20. Credits
  21.  
  22. Changes Since Last Release
  23. ==========================
  24.  
  25. 1.10
  26. - Finished NetPlay v1 - allows up to five networked machines to play 
  27.   multi-player SNES games, one player on each machine.
  28. - Switchable full-screen mode added to Linux X11 port, some code and ideas
  29.   nicked from Maciej Babinski's original Snes9x XFree86 DGA Linux port, the
  30.   UAE Amiga emulator, plus lots of my own code.
  31. 1.08
  32. - Bug fixes to C Super FX emulation - now Winter Gold works correctly again.
  33. 1.07
  34. - More DSP1 work. Mario Kart is now playable! The character projection code
  35.   is still broken so the opponents and obstacles aren't always positioned
  36.   correctly on screen and you keep bumping into them, but I can still keep 
  37.   coming first!
  38. - Started work on NetPlay support.
  39. - Decreased sound card DMA buffer size on DOS port to improve sound generation
  40.   and sound CPU synchronisation in some games.
  41. - Included Linux joystick driver patches from Vojtech Pavlik so the port can
  42.   use the new v1.x joystick drivers, again written by Vojtech Pavlik. Allows
  43.   use of Micro$oft Sidewinder pads, NES and SNES pads, PlayStation pads,
  44.   Gamepad Pros, etc.
  45. - Added halve-the-result colour subtraction.
  46. 1.06
  47. - Extended code to allow support for multiple 16-bit screen formats,
  48.   switchable at run-time, rather just supporting one, selectable at compile
  49.   time.
  50. - Added XFree86 DGA Linux port - code from Maciej Babinski.
  51. - More fixes to the X11 image format conversion and setup code.
  52. - The asm SetByte routine wasn't wrapping writes to S-RAM correctly, allowing
  53.   some ROMs to think they were running on a copier and put up an error
  54.   screen. Thanks to Nu of #rom for the report.
  55. - Added 'TV-Mode' support (interpolation and scan-lines) to the DOS and
  56.   UNIX ports from code based on John Stiles work.
  57. - Added v-sync option to the DOS port.
  58. - Added fix to Pro Action Reply support, thanks to Paul Shoener III.
  59. - Added ggi support (untested) to Linux port using patches from
  60.   Alexander Larsson (alla@lysator.liu.se).
  61. - Added 16 to 24/32 bit image conversion routines to the UNIX X11 code.
  62. - The SPC700 OR1 instruction was broken. Thanks to Pyrgopolinices for the
  63.   report.
  64. - DOS port was having trouble splitting and joining path names - caused
  65.   problems when specifying the full path name of a ROM when the ROM image
  66.   was on another drive.
  67. - If a ROM reset the sound DSP and then turned on echo effects but kept
  68.   the same echo delay setting, then the echo effects could not be heard.
  69.   Thanks to madec@mclink.it for the bug report and freeze file that made it
  70.   easy to find the problem.
  71. - DOS port was always using stereo sound setting, if sound card
  72.   supported it, regardless of the user preference.
  73. - Linux port X11 port could crash if window was resized while transparency
  74.   effects were enabled.
  75. - The colour subtraction accelerator look-up table was slightly wrong, causing
  76.   one bit of red, green blue values to 'spill' into the next field.
  77. - Allowed colour window to cut a hole in the main-screen and show the sub-
  78.   screen underneath. The effect is used by Illusion of Gaia.
  79. - Added support for colour subtraction, with the halve-the-result flag
  80.   set.
  81. - Included DSP1 code from _Demo_. Now you can see the track in Mario Kart and
  82.   the ground in Pilot Wings - still can't play the games though due to other
  83.   missing commands.
  84. - Added an NMI hack to work around a code bug in Battle Toads: BATTLEMANIACS,
  85.   its only by chance that the game works on a real SNES - And disabled it
  86.   again because it causes problems for Chrono Trigger.
  87. - A frame skip of zero was actually still skipping one frame. Thanks to
  88.   Marius Fodor for the info.
  89. - And yet more X-OR window bug fixes - now the effects during some of the more
  90.   'posh' spells look correct in Chrono Trigger.
  91. - Yet another window area inversion bug - off by one pixel on right-hand edge.
  92. - Forgot to put dummy start and end points for XOR window combination modes -
  93.   now Uniracers looks correct and Sailor Moon looks like it does on a real 
  94.   SNES.
  95. - Window clip code was using wrong index into a 2-dimensional array when
  96.   the whole of the main or sub-screens were clipped.
  97. 1.05
  98. - The master volume disable code was looking that the wrong variable!
  99. - Fixed crash bug in newer sound code if a ROM tried to start a sample
  100.   playing who's data went past the end of SPC700 memory. (Cannon Fodder)
  101. 1.04
  102. - Fixed DSP1 ROM header detection bug.
  103. - More DSP1 work; still nothing works, although I know the multiply command
  104.   is correct because I've compared the results against a real DSP1.
  105. 1.03
  106. - Oops, the multi-player 5 disable code change broke the multi-player 5 being
  107.   the default controller.
  108. - Implemented the colour window on the main screen - now Zelda's oval zoom
  109.   window displays correctly and Krusty's Super Fun House clips the left-most
  110.   8 pixels as it does on the real SNES.
  111. - TERRANIGMA didn't like me returning a random value when it attempted to 
  112.   read a channel's the current sample byte.
  113. - Hacked in initial support for mode 7 priority-per-pixel - the priority bit
  114.   doesn't actually change the priority of the pixel but the two games that I
  115.   know of that use the feature look OK. (Winter Extreme Skiing and the
  116.   intro of Tiny Toons Adventures).
  117. - Colour addition/subtraction code now uses RGB565 rather than RGB555
  118.   calculations - helps a little with the loss of the bottom bit of SNES
  119.   colour data.
  120. - DSP1 emulation started - nothing works yet.
  121. 1.02
  122. - Switched to adding back drop colour rather than fixed colour when
  123.   sub-screen addition is enabled but there's nothing on the sub-screen.
  124.   Uniracers seems to need it. - DISABLED it again. Causes problems for
  125.   other ROMs and Uniracers itself on later screens.
  126. - Fixed XOR window logic combination mode and area inversion code, now
  127.   Uniracers works correctly.
  128. - Oops, if colour window and half colour addition/subtraction were both
  129.   switched on, area outside colour window was still being halved, it shouldn't.
  130.   Hacky fix at the moment until I implement the correct fix.
  131. - Fixed several bugs with the mosaic effect and 16x16 tiles and a few
  132.   possible background scroll offset bugs and the mosaic effect.
  133. - Optimised the sound sample generation code for cases when the SNES
  134.   sample playback frequency was higher than the sound card playback rate.
  135. - Fixed possible click sound when a sample was first started to be played.
  136. 1.01
  137. - Corrected scanline count for PAL games - should be 312 lines verses 262 for
  138.   NTSC. Was causing slow music on PAL games.
  139. - Added error correction code to the SPC700 timer update code - the
  140.   SPC700 timers are updated using the emulated h-blank handler which is
  141.   called every emulated 63.6 microseconds (15.720KHz) but the SPC700 timers
  142.   need to be updated at multiples of 8KHz, hence the error. Was causing
  143.   music to be played slightly too fast.
  144. - Switched back to using C SPC700 code - the old SPC700 asm code was lacking
  145.   several optimisations that the C version had. It also had multiple
  146.   speed hack cycle skipping bugs. Plus I hadn't even finished optimising
  147.   all the code from the last time I converted the C compiler output.
  148. - Optimised SPC700 memory access routines a little.
  149. - Disabled code that prevented ROMs updating SPC700 timer values while the
  150.   timer was running - it seems like it is allowed, even though docs on the
  151.   'net I've seen say its not.
  152.  
  153. Introduction
  154. ============
  155.  
  156. Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
  157. emulator. It basically allows you to play most games designed for the SNES
  158. and Super Famicom Nintendo game systems on your PC or Workstation; they
  159. include some real gems that were only ever released in Japan.
  160.  
  161. Snes9x is the result of well over a year and a half's worth of part-time
  162. hacking, coding, recoding, debugging, divorce, etc. (just kidding about the
  163. divorce bit). Snes9x is coded in C++, with three assembler CPU emulation
  164. cores on the i386 Linux and Windows ports.
  165.  
  166. Snes9x is better than a real SNES:
  167. o Freeze a game at any position, then restore the game to that exact spot at
  168.   a later date - ideal for saving a game just before a difficult bit.
  169. o Built-in cheat cartridge.
  170. o Built-in peripheral emulation. The SNES mouse, Multi-player 5 and SuperScope
  171.   external add-ons are all emulated, they cost extra money with a real SNES.
  172. o Stereo sound - yes I know the SNES produced stereo sound, but who actually
  173.   paid the inflated price for the special lead just so you could hear it?
  174. o No more cartridge contact cleaning!
  175. o Some SNES hardware features that be turned on and off during game play,
  176.   games might be using one of these features to deliberately make a section
  177.   of the game more difficult. Easy, just turn the feature off.
  178. o Networked game play.
  179.  
  180. Snes9x is worse than a real SNES:
  181. o Unless your computer is very fast (Pentium II+), some games just can't
  182.   hit every frame being rendered and the emulator starts to omit rendering
  183.   some frames to keep the emulator running at a constant speed - to you
  184.   it appears as if the graphics aren't moving as smoothly as they should.
  185. o Not all games work; bugs and missing features cause some games to fail to
  186.   work or renders them un-playable.
  187. o You have to wait for your computer to boot before you can play games,
  188.   no waiting on the real SNES!
  189. o The SNES has an analog low-pass sound filter that give a nice bass to
  190.   all the sounds and music - Snes9x doesn't emulate this. If you have
  191.   a posh sound card, you could try fiddling with it mixer controls to produce
  192.   a similar effect. Lower the playback rate can have a similar effect.
  193.  
  194. What's Emulated
  195. ===============
  196. - The 65c816 main CPU.
  197. - The Sony SPC700 sound CPU.
  198. - SNES variable length cycles.
  199. - 8 channel DMA and H-DMA (raster effects).
  200. - All background modes, 0 to 7.
  201. - Sound DSP, with eight 16-bit stereo channels, compressed samples, hardware
  202.   attack-decay-sustain-release volume processing, echo, pitch modulation
  203.   and digital FIR sound filter.
  204. - 8x8, 16x8 and 16x16 tile sizes, flipped in either direction.
  205. - 32x32, 32x64, 64x32 and 64x64 screen tile sizes.
  206. - H-IRQ, V-IRQ and NMI.
  207. - Mode 7 screen rotation, scaling and screen flipping.
  208. - Vertical offset-per-tile in modes 2, and 4.
  209. - 256x224, 256x239, 512x224, 512x239, 512x448 and 512x478 SNES screen
  210.   resolutions.
  211. - Sub-screen and fixed colour transparency effects.
  212. - Mosaic effect.
  213. - Single and dual graphic clip windows, with all four logic combination modes.
  214. - Colour effects only inside a window.
  215. - 128 8x8, 16x16, 32x32 or 64x64 sprites, flipped in either direction.
  216. - SNES palette changes during frame (15/16-bit internal rendering only).
  217. - Super FX, a 21/10MHz RISC CPU found in the cartridge of several games.
  218. - SNES mouse.
  219. - SuperScope (light gun) emulated using computer mouse.
  220. - Multi-player 5 - allowing up to five people to play games simultaneously on
  221.   games that support that many players.
  222. - Game-Genie, Action Replay and Gold Finger cheat codes.
  223. - Multiple ROM image formats, with or without a 512 byte copier header.
  224. - Single or split images, compressed using gzip, and interleaved in one of two
  225.   ways.
  226. - Auto S-RAM (battery backed RAM) loading and saving.
  227. - Freeze-game support, now portable between different Snes9x ports.
  228.  
  229. What's Not
  230. ==========
  231. - Only partial DSP1 support, enough to play Mario Kart but no more. The DSP1
  232.   is a math co-processor chip that was inside the cartridge of some games,
  233.   notably Mario Kart and Pilot Wings.
  234. - Any other odd chips that manufactures sometimes placed inside the
  235.   cartridge to enhance games and as a nice side-effect, also act as an 
  236.   anti-piracy measure.
  237. - Direct colour mode - uses tile and palette-group data directly as RGB value.
  238. - Pseudo hi-res. mode - SNES hardware uses interpolation to give apparent
  239.   increase in horizontal resolution, use the TV mode to get the same effect.
  240. - Mosaic effect on mode 7.
  241. - A couple of SPC700 instructions that I can't work out what they should do.
  242. - Fixed colour and mosaic effects in SNES hi-res. (512x448) modes.
  243. - Offset-per-tile in mode 6. Luckily I haven't found a game that uses it, yet.
  244. - Horizontal offset-per-tile in modes 2, 4 and 6. Just noticed that Chrono
  245.   Trigger uses that.
  246. - Cycle counting on SPC700 emulation.
  247. - Executing SPC700 instructions during SNES DMA operation.
  248. - Exact sound CPU and sound generation synchronisation.
  249. - Various pixel priority problems with sprites and transparency effects.
  250.  
  251. What You Will Need
  252. ==================
  253.  
  254. CPU
  255. ---
  256. Faster the better, but 486DX4 100 minimum when using 8-bit graphics and
  257. minimal or no sound, Pentium 166 or higher for transparency effects and
  258. Pentium 200 or higher for Super FX games.
  259.  
  260. Memory
  261. ------
  262. 16Mb or more for Linux. Sun workstations shouldn't have a problem.
  263.  
  264. Screen
  265. ------
  266. X Window System ports needs an 8, 15, 16, 24 or 32 bit X server running;
  267. transparency effects are available at all depths, but don't look good with
  268. only an 8-bit display. For maximum emulation speed, have the X server switched
  269. to 8-bit and don't enable transparency effects, or 15 or 16-bit with
  270. transparency effects enabled.
  271.  
  272. The Linux SVGA port is very limited at the moment due to no 16-bit screen
  273. modes being supported on my two main development machines. However, the
  274. Linux X Window System version now has a full-screen mode, so there's hopefully
  275. no need to use the SVGA version.
  276.  
  277. Disk Space
  278. ----------
  279. 1Mb for the emulator.
  280.  
  281. Software
  282. --------
  283. Access to SNES ROM images in *.smc, *.sfc, *.fig or *.1, *.2, or sf32xxxa,
  284. sf32xxxb, etc., format otherwise you will have nothing to run!
  285.  
  286. Please note, it is illegal in most countries to have commercial ROM images
  287. without also owning the actual SNES ROM cartridge.
  288.  
  289. Getting Started
  290. ===============
  291.  
  292. From a shell just type:
  293. snes9x <ROM filename>
  294.  
  295. to start the X Window System port or
  296.  
  297. ssnes9x <ROM filename>
  298.  
  299. to start the Linux SVGA port.
  300.  
  301. ROM images are normally loaded from the directory ./roms. This can be
  302. changed by specifying a pathname with the image name or setting the
  303. environment variable SNES96_ROM_DIR to point to a different directory.
  304.  
  305. Freeze game files and S-RAM save files are normally read from and written to
  306. the directory $HOME/.snes96_snapshots.  This can be changed by setting the
  307. environment variable SNES96_SNAPSHOT_DIR to point to a different directory.
  308.  
  309. The Linux SVGA port and to get access to full-screen mode on the Linux X
  310. Window System port, Snes9x needs root permissions. In the directory where
  311. Snes9x is located:
  312.  
  313. su root
  314. chown root snes9x ssnes9x
  315. chmod 4755 snes9x ssnes9x
  316.  
  317. Some command line flags are available:
  318.  
  319. Graphics options:
  320. -tr or transparency (default: off)
  321.    Enable transparency effects, also enables 16-bit screen mode selection.
  322.    Transparency effects are automatically enabled if the depth of your X 
  323.    server is 15 or greater. 
  324. -16 or -sixteen (default: off)
  325.    Enable 16-bit internal screen rendering, allows palette changes but no
  326.    transparency effects.
  327. -hires or -hi (default: lo-res.)
  328.    Enable support for SNES hi-res. and interlace modes. USE ONLY IF GAME
  329.    REQUIRES IT (FEW DO) BECAUSE IT REALLY SLOWS DOWN THE EMULATOR.
  330. -y or -interpolate (default: off)
  331.    Enables 'TV mode', hires support, 16-bit internal rendering and
  332.    transparency effects. TV mode scales the SNES image by x2 by inserting an
  333.    extra blended pixel between each SNES pixel and 80% brightness 'scan-lines'
  334.    between each horizontal line. The result looks very nice but needs a fast
  335.    machine. Use with the full-screen X mode and a 15 or 16 depth X server,
  336.    or the SVGA port for fastest operation.
  337. -nms or -nomodeswitch (default: switch modes)
  338.    The Linux X Windows System port can change the screen resolution when
  339.    switching to full-screen mode so the SNES display fills the whole screen.
  340.    Specify this option to stop it if causes you problems.
  341. -scale or -sc (default: off)
  342.    Stretch the SNES display to fit the whole of the computer display.
  343.    Linux X Window System full-screen mode or SVGA port only. Use only if you
  344.    have a very fast machine.
  345.   
  346. Sound options:
  347. -ns or -nosound
  348.    Disable sound CPU emulation and sound output, useful for the few ROMs
  349.    where sound emulation causes them to lock up due to timing errors.
  350. -sk 0-3 or -soundskip 0-3 (default: 0)
  351.    ONLY USED IF SOUND IS DISABLED. 
  352. -stereo or -st (default: stereo)
  353.    Enable stereo sound output.
  354. -mono (default: stereo)
  355.    Enable mono sound output. Faster, but doesn't sound as nice.
  356. -r 0-7 or -soundquality or -sq 0-7 (default: 4)
  357.    Sound playback rate/quality:
  358.        0 - disable sound, 1 - 8192, 2 - 11025, 3 - 16500, 4 - 22050 (default),
  359.        5 - 29300, 6 - 36600, 7 - 44000.
  360. -b size or -buffersize size or -bs size (default: auto-select)
  361.    Sound playback buffer size in bytes 128-4096.
  362. -envx or -ex (default: off)
  363.    Enable volume envelope height reading by the sound CPU. Can cure sound
  364.    repeat problems with some games (e.g. Mortal Kombat series), while causing
  365.    others to lock if enabled (eg. Bomberman series).
  366. -nosamplecaching or -nsc or -nc (default: on)
  367.    Disable decompressed sound sample caching. Decompressing samples takes time,
  368.    slowing down the emulator. Normally the decompressed samples are saved
  369.    just in case they need to be played again, but the way samples are stored
  370.    and played on the SNES, it can result in a click sound or distortion when
  371.    caching samples with loops in them.
  372. -noecho or -ne (default: on)
  373.    Turn off sound echo and FIR filter effects. Processing these effects can
  374.    really slow down a non-MMX Pentium machine due to the number of calculations
  375.    required to implement these features.
  376. -ratio 1+ or -ra 1+ (default: 2)
  377.    Ratio of 65c816 to SPC700 instructions. Default of 2 is fine for most
  378.    games, but 3 gets Fifa 96 and games written by the software house Human
  379.    working. 5 gets The Empire Strikes Back working. There will be others.
  380. -nomastervolume or -nmv (default: on)
  381.    Disable emulation of the sound DSP master volume control. Some ROMs set
  382.    the volume level very low requiring you to turn up the volume level of
  383.    your speakers introducing more background noise. Use this option to
  384.    always have the master volume set on full and to by-pass a bug which
  385.    prevents the music and sound effects being heard on Turrican.
  386.  
  387. Cheat options:
  388. -gg <code> or -gamegenie <code>
  389.    Supply a Game Genie code for the current ROM. Up to 10 codes can be in
  390.    affect at once. Game Genie codes for many SNES games are available from:
  391.    http://game-genie.nvc.cc.ca.us
  392. -ar <code> or -actionreplay <code>
  393.    Supply a Pro-Action Reply code for the current ROM. Up to 10 codes can be in
  394.    affect at once. At the moment, codes which alter RAM do not work.
  395. -gf <code> or -goldfinger <code>
  396.    Supply a Gold Finger code for the current ROM. Up to 10 codes can be in
  397.    affect at once.
  398.  
  399. Speed up/slow down options: (See "Speeding Up The Emulation")
  400. -f <frame skip count> or -frameskip <frame skip count> (default: auto-adjust)
  401.    Set this value to deliberately fix the frame skip rate and disable auto-
  402.    speed regulation. Use a larger value faster emulation but more jerky
  403.    movement and a smaller value for smooth but slower screen updates.
  404.    Use '+' and '-' keys to modify the value during a game.
  405.    Ideal for some Super FX games that confuse the auto-adjust code or
  406.    for games that deliberately flash the screen every alternate frame.
  407. -frametime <time in milliseconds> or -ft <time in milliseconds>
  408.    (default: 16.6ms NTSC games and 20ms for PAL games)
  409.    If auto-adjust frame skip option is in effect, then the emulator will try
  410.    to maintain a constant game and music speed locked to this value by skipping
  411.    the rendering of some frames or waiting until the required time is reached.
  412.    Increase the value to slow down games, decrease it to speed up games.
  413.    During a game the value can be adjusted in millisecond steps by pressing
  414.    Shift '-' or Shift '+'.
  415. -h <0-200> or -cycles <0-200>(default: 100)
  416.    Percentage of CPU cycles to execute per scan line, decrease value to
  417.    increase emulation frame rate. Most ROMs work with a value of 85 or above.
  418. -j or -nojoy
  419.    Turn off joystick, SideWinder and GrIP detection (joystick polling on the
  420.    PC slows the emulator down).
  421.  
  422. ROM image format options:
  423. -i or -interleaved (default: auto-detect)
  424.    Force interleaved ROM image format.
  425. -i2 or -interleaved (default: can't be auto-detected)
  426.    Force alternate interleaved format (i.e. most Super FX games).
  427. -hirom or -fh or -hr (default: auto-detect)
  428.    Force Hi-ROM memory map for ROMs where the Hi-ROM header test fails.
  429. -lorom or -fl or -lr (default: auto-detect)
  430.    Force Lo-ROM memory map for ROMs where the Hi-ROM header test fails)
  431. -header or -hd (default: auto-detect)
  432.    Force the detection of a ROM image header. Some ROM images have been 
  433.    hand-edited to remove unused space from the end of the file; if the
  434.    resultant image size is not a multiple of 32k then Snes9x can't 
  435.    auto-detect the presense of a 512 byte ROM image header.
  436. -noheader or -nhd (default: auto-detect)
  437.    Force Snes9x into thinking no ROM image header is present. See -header
  438.    above.
  439. -p or -pal (default: auto-detect)
  440.    Fool ROM into thinking this is a PAL SNES system and adjust frame time
  441.    to 20ms (50 frames per second)
  442. -n or -ntsc (default: auto-detect)
  443.    Fool ROM into thinking this is a NTSC SNES system and adjust frame time
  444.    to 16.7ms (60 frames per second)
  445. -l or -layering (default: off)
  446.    Swap background layer priorities from background involved in sub-screen
  447.    addition/subtraction. Can improve some games play-ability - no need to
  448.    constantly toggle background layers on and off to read text/see maps, etc.
  449.    Toggle feature on and off during game by pressing '8'.
  450.    Not used if transparency effects are enabled.
  451. -l <freeze game file name> or -loadsnapshot <freeze game file name>
  452.    Load snapshot file and restart game from saved position.
  453. -nh or -nohdma (default: H-DMA enabled)
  454.    Turn off the H-DMA emulation. Pressing '0' during a game toggles H-DMA on
  455.    and off.
  456. -n or -nospeedhacks (default: speed hacks)
  457.    Turn off a couple of speed hacks. The hacks boost the speed of many ROMs
  458.    but cause problems a few ROMs.
  459. -nw or -nowindows (default: graphics windows emulated)
  460.    Disable graphics windows emulation. Use 'backspace' key during a game to
  461.    toggle the emulation on and off.
  462.  
  463. Joystick options:
  464. -joymap[1|2|3|4] followed by 8 numbers
  465.    Specify the SNES joypad buttons to Linux joystick driver buttons mapping for
  466.    each of the four supported joypads.
  467.    Specify the Linux joystick button number for the corresponding SNES button
  468.    in the following order: A, B, X, Y, TL, TR, Start and Select
  469.    The default map is: 1 0 4 3 6 7 8 9 
  470.    which is suitable for Sidewinder gamepads.
  471. -s or -swap
  472.    Swap emulated joy-pad 1 and 2 around, pressing '6' during a game does the
  473.    same thing.
  474. -j or -nojoy
  475.    Turn off joystick, SideWinder and GrIP detection (joystick polling on the
  476.    PC slows the emulator down).
  477.  
  478. For example, to start a game called "mario", with sound, and transparency
  479. effects, type:
  480.  
  481. snes9x -tr mario.smc
  482.  
  483. Keyboard Controls
  484. =================
  485.  
  486. While the emulator is running:
  487. 'Escape'                 Quit the emulator
  488. 'Pause' or 'Scroll Lock' Pause the emulator
  489. Alt+'f' or PrtSc     Toggle the X11 port full-screen mode on and off.
  490.  
  491. Joy-pad 1:
  492. 'up' or 'u'             Up direction
  493. 'down', 'j' or 'n'      Down direction
  494. 'left' or 'h'           Left direction
  495. 'right' or 'k'          Right direction
  496. 'a', 'v' or 'q'         TL button
  497. 'z', 'b' or 'w'         TR button
  498. 's', 'm' or 'e'         X button
  499. 'x', ',' or 'r'         Y button
  500. 'd', '.' or 't'         A button
  501. 'c', '/' or 'y'         B button
  502. 'return'                Start button
  503. 'space'                 Select button
  504.  
  505. 'Mouse left'            Mouse left button or SuperScope fire button.
  506. 'Mouse right'           Mouse right button or SuperScope cursor button.
  507.  
  508. 'tab'                   SuperScope turbo toggle switch.
  509. '`'                     SuperScope pause button.
  510.  
  511. '0'                     Toggle H-DMA emulation on/off.
  512. '1'                     Toggle background 1 on/off.
  513. '2'                     Toggle background 2 on/off.
  514. '3'                     Toggle background 3 on/off.
  515. '4'                     Toggle background 4 on/off.
  516. '5'                     Toggle sprites (sprites) on/off
  517. '6'                     Toggle swapping of joy-pad one and two around
  518. '7'            Rotate between Multi-player 5, mouse on port 1,
  519.                         mouse on port 2 and SuperScope emulation.
  520. '8'                     Toggle background layer priorities for backgrounds
  521.                         involved in sub-screen addition/subtraction.
  522. '9'            Toggle transparency effects on and off - only if
  523.             16-bit screen mode selected.
  524. 'Backspace'        Toggle emulation of graphics window effects on/off.
  525.  
  526. '-'            Decrease frame redraw skip rate
  527. '+'            Increase frame redraw skip rate
  528.             The sequence is auto-frame rate adjust, render every
  529.                         frame, render 1 frame in two, render 1 frame in three,
  530.                         render 1 frame in four, etc.
  531.  
  532. Shift+'-'        Decrease frame time in 1ms steps.
  533. Shift+'+'        Increase frame time in 1ms steps.
  534.             The frame time value is the average length of time a
  535.             single frame should take to emulate - works only if
  536.             the auto-frame rate adjust is operational.
  537.             The code will skip the rendering of some
  538.             frames in order to try and reach the required value.
  539. Shift+'F1-F10'          Quick save a freeze game file.
  540. 'F1-F10'                Quick load a freeze game file, restoring a game to an
  541.                         exact position.
  542. Alt+'F2'                Load a game's saved position.
  543. Alt+'F3'                Save a game's position.
  544.  
  545. Alt+'F4' -> 'F11'    Toggle sound channels on/off.
  546. Alt+'F12'        Turn on all sound channels.
  547.  
  548. Joystick Support
  549. ================
  550.  
  551. The Linux port now makes use of the new v1.x joystick kernel drivers written
  552. by Vojtech Pavlik (vojtech@ucw.cz) to allow the use of a wide varity of
  553. different joystick/joypad types to control SNES games.
  554.  
  555. Older versions of the drivers are included in recent development Linux
  556. kernels. Download the lastest driver version from 
  557. http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/
  558.  
  559. Refer to the documentation that comes with the drivers to enable support for
  560. your type of joystick/pad in Snes9x.
  561.  
  562. Netplay Support
  563. ===============
  564.  
  565. The Linux and UNIX ports of Snes9x support networked game-play, where
  566. each player of a multi-player SNES game can be on their own workstation.
  567. Due to the nature in which the emulated SNES games where written and speed
  568. general lack of speed of the Internet, only local-area network game play is
  569. possible.
  570.  
  571. Start the s9xserver process on one machine, then start snes9x on each
  572. workstation giving the extra command-line flag -server <hostname> where
  573. <hostname> is the name of the machine where the s9xserver process was
  574. started. Is is also possible to specify the server name by setting the
  575. environment variable S9XSERVER to the server hostname.
  576.  
  577. Snes9x normally uses network port 6096 by default, this can be changed by
  578. specifying -port <port num> on the command line of the server and snes9x,
  579. or by setting the environment variable S9XPORT.
  580.  
  581. The first snes9x session to connect to the server becomes player 1 and dicates
  582. what ROM all other snes9x clients will have to run before connecting to the
  583. server. The second client to connect becomes player 2, and so on. As each new
  584. snes9x client process connects to the server, existing games in progress are
  585. reset to the beginning to keep everyone in sync.
  586.  
  587. Some SNES games randomise game play and screen layout using data from the SNES
  588. sound chip, notably the Bomberman series. Since Snes9x doesn't keep the sound
  589. generation in exact synchronisation with the CPU emulation (if it did you'd
  590. keep hearing breaks in the sound), you find such games can vary the screen
  591. layout and baddy movement between Snes9x sessions given that all other
  592. external input is identical, thus making it difficult to play multi-player
  593. networked sessions with these games. To network play such games, either switch
  594. off sound (-ns) or wait until I provide a re-sync option in the next release.
  595.  
  596. Super FX
  597. ========
  598.  
  599. The Super FX is a 10/21MHz RISC CPU developed by Argonaut Software used as a
  600. game enhancer by several game tiles. Support is still buggy and I've no
  601. idea what the problem is. Oh well, may be one day... Anyway, games that work:
  602. Yoshi's Island (best single-player game on SNES, if you like platform games),
  603. Doom, Winter Gold and Dirt Trax FX.
  604.  
  605. Games that don't work:
  606. StarFox, StarFox 2, Stunt Race FX, Vortex.
  607.  
  608. All games that actually work are extremely playable on my 200MHz K6 desktop
  609. machine. Frame rates will suffer for folks with slower machines.
  610.  
  611. Lots of Super FX ROM images available are in an odd interleaved format that
  612. I haven't worked out how to auto-detect. If your ROM image isn't working try
  613. using the -i2 command line flag.
  614.  
  615. Problems With ROMs
  616. ==================
  617.  
  618. If the emulator just displays a black screen for over 10 seconds, then one
  619. of the following could be true:
  620.  
  621. 1) If its a SuperFX game, chances are its in interleaved2 format, try the -i2
  622.    switch.
  623. 2) Someone has edited the Nintendo ROM information area inside the ROM image
  624.    and Snes9x can't work out what format ROM image is in. Try playing
  625.    around with the ROM options: -i, -fl, -fh, -hd, -nhd.
  626. 3) The ROM image is corrupt. If you're loading from CD, I know it might
  627.    sound silly, but is the CD dirty?
  628. 4) The 65c816 to SPC700 communication has failed. Try -ratio 3 or -ratio 5.
  629.    If that doesn't work, and you don't mind playing the game without sound,
  630.    try  -ns and then one of -ss 0, -ss 1, -ss 2 or -ss 3.
  631. 5) The original SNES ROM cartridge had additional hardware inside that is not
  632.    emulated yet and might never be - e.g. Street Fighter 2 Alpha,
  633.    Megaman X2, Megaman X3 and Mario RPG.
  634. 6) Its a 48Mbit game and I haven't managed to work out the SNES memory map
  635.    for such games. Now the Snes9x source code has been released, anyone
  636.    willing to take up the challenge?
  637.  
  638. Sound Problems
  639. ==============
  640.  
  641. No sound coming from any SNES game using Snes9x? Could be any or all of
  642. these:
  643.  
  644. - Snes9x couldn't open the sound device (/dev/dsp) when it started (Snes9x
  645.   should display an error message), a permissions problem, the device doesn't
  646.   exist or some other process already has the sound device open.
  647. - The kernel doesn't support your sound hardware (Linux barely supports the
  648.   sound card in my new laptop, I'm stuck with 8-bit sound only at the moment).
  649. - You haven't got the volume control on your speakers turned down, have you?
  650.  
  651. General sound problems:
  652.  
  653. - Music plays very slowly on some games, try the -n option.
  654. - Sound samples keep repeating or don't switch off, especially ones
  655.   that play lots of speech samples, try -envx (e.g. Mortal Kombat series).
  656. - Sound quality is poor on all games. You have a noisy sound card (usually 
  657.   cheap cards) or one that Linux only supports at 8-bit.
  658.  
  659. Converting ROM Images
  660. =====================
  661.  
  662. If you have a ROM image in several pieces, simply rename them so their
  663. filename extensions are numbered: e.g. game.1, game.2, etc. Then, when
  664. loading the ROM image, just specify the name of the first part; the remaining
  665. parts will be loaded automatically.
  666.  
  667. If they are already in the form sf32xxxa, sf32xxxb, etc., you don't even have
  668. to rename them; just specify the name of the first part, as above.
  669.  
  670. Emulation speed
  671. ===============
  672.  
  673. Emulating an SNES is very compute intensive, with its two or three CPUs,
  674. an 8 channel digital sound processor with real-time sound sample decompression
  675. and stereo sound, two custom graphics processors, etc.
  676.  
  677. If you only have a 486 machine, you will need to stick to using only 8-bit
  678. graphics and minimal or no sound:
  679.  
  680. With sound:
  681. snes9x -ne -r 1 -m 2 -mono <rom filename>
  682.  
  683. Without sound:
  684. snes9x -ns -m 2 <ROM filename>.
  685.  
  686. Disabling the joystick support will also help (-j).
  687.  
  688. For maximum speed, if you're using the X Window System port, make sure your
  689. X server is set to depth 8 and transparency effects are not enabled, or your
  690. X server is set to depth 15 or 16 if you want transparency effects.
  691.  
  692. If you want to use the TV mode (-y), switching to a full-screen display is
  693. usually fastest with the X server set to depth 15 or 16.
  694.  
  695. Don't enable the scale option and don't resize the window on the X Windows
  696. port.
  697.  
  698. Users with slower Pentium machines might want to turn off echo and digital
  699. FIR filter effects, due to the number of multiply operations needed to
  700. implement them. Use -ne option.
  701.  
  702. Got a big throbbing beast of a CPU under the cover of your computer? These
  703. options will sort out the men from the boys:
  704. snes9x -y -sc -r 5 -nc <ROM filename>
  705.  
  706. Credits
  707. -------
  708.  
  709. - Jerremy Koot for all his hard work on current and previous versions of 
  710.   Snes96, Snes97 and Snes9x.
  711. - Lstat for the original Super FX C emulation, DSP1 emulation work and 
  712.   information on both chips.
  713. - zsKnight and _Demo_ for the Intel Super FX assembler code.
  714. - zsKnight and _Demo_ for all the other ideas I've nicked off them; they've
  715.   nicked lots of my ideas and information too!
  716. - DiskDude's SNES Kart v1.6 document for the Game Genie(TM), Gold Finger and
  717.   Pro Action Replay cheat system information.
  718. - Lord ESNES for some nice chats and generally useful stuff.
  719. - Lee Hyde (lee@jlp1.demon.co.uk) for his quest for sound information and 
  720.   the Windows 95 icon.
  721. - Shawn Hargreaves for the rather good Allegro 3.0 DOS library.
  722. - Robert Grubbs for the SideWinder information - although I didn't use his
  723.   actual driver in the end.
  724. - Steve Snake for his insights into SNES sound sample decompression.
  725. - Vojtech Pavlik for the Linux joystick driver patches.
  726. - Maciej Babinski for the basics of Linux's DGA X server extensions.
  727. - Alexander Larsson for the GGI Linux port code.
  728. - Harald Fielker for the sound interpolation code (not included in this 
  729.   release due to problems).
  730.  
  731. Super NES, SuperScope and Super FX are a trademarks of Nintendo. 
  732. Sun, Solaris and Sparc are all trademarks of Sun Microsystems, Inc.  
  733. Game Genie is a trademark of Lewis Galoob Toys, Inc.
  734. MS-DOS and Windows 95 are trademarks of Microsoft Corp.
  735. Intel, Pentium and MMX are all trademarks of Intel Corp.
  736. Sony is a trademark of Sony Corp.
  737. UNIX is a trademark of someone, I forget who, but its not AT&T, they sold it.
  738.  
  739. ------------------------------------------------------------------------------
  740. Gary Henderson
  741. gary@snes9x.com
  742.